// 单个医院类型
export interface HospitalItemType extends HospitalType {
  // 预约规则
  bookingRule: BookingRuleType
}

// 医院列表类型
export type HospitalListType = HospitalItemType[]

// 声明状态 0 未上线  1  已上线
export type Status = 0 | 1

// 请求参数 - 一般都要带
export interface ReqGetHospitalListParams {
  // 当前页码
  page: number
  // 每页的条数
  limit: number
  // 医院编号
  hoscode?: string
  // 医院名称
  hosname?: string
  // 医院类型
  hostype?: string
  // 省编码
  provinceCode?: string
  // 市编码
  cityCode?: string
  // 区县编码
  districtCode?: string
  // 状态
  status?: Status
}

// 响应结果 - 只有get请求需要
export interface ReqGetHospitalListResponse {
  // 内容
  content: HospitalListType
  totalElements: number
}

// --- 表单查询的types -----------------------------------

// 单个省市区的数据
export interface ProvinceItem {
  id: number
  // 名称
  name: string
  // 选中之后的值
  value: string
}

// 省市区数据的列表
export type ProvinceList = ProvinceItem[]

// ---- 定义医院详情的数据 ----------------------
// const obj = {
//   bookingRule: {
//     cycle: 10,
//     releaseTime: '16:00',
//     stopTime: '12:30',
//     quitDay: -1,
//     quitTime: '15:30',
//     rule: [],
//  },
//   hospital: {
//     id: '622574d336a9ba1be763dada',
//     createTime: '2022-03-07 10:58:27',
//     updateTime: '2022-12-16 16:53:53',
//     isDeleted: 0,
//     param: '',
//     hoscode: '1000_2',
//     hosname: '北京大学第一医院',
//     hostype: '4',
//     provinceCode: '110000',
//     cityCode: '110100',
//     districtCode: '110106',
//     address: '',
//     logoData: '',
//     intro:'',
//     route:'',
//     status: 0,
//   },
// }


// 预约规则接口
export interface BookingRuleType {
  // 预约周期
  cycle: number
  // 放号时间
  releaseTime: string
  // 停止挂号时间
  stopTime: string
  // 退号时间
  quitTime: string
  // 预约规则
  rule: string[]
}

// 单个医院的类型
export interface HospitalType {
  id: string
  // 创建时间
  createTime: string
  // 医院类型和医院完整地址
  param: {
    hostypeString: string
    fullAddress: string
  }
  // 医院编号
  hoscode: string
  // 医院名称
  hosname: string
  // 医院类型
  hostype: string
  // 省编码
  provinceCode: string
  // 市编码
  cityCode: string
  // 区编码
  districtCode: string
  // 医院Logo
  logoData: string
  // 医院介绍
  intro: string
  // 交通方式
  route: string
  // 是否上线   0 未上线  1 已上线
  status: Status
}

// 响应回来的数据，包含这两项值
export interface HospitalDetailType {
  // 预约规则
  bookingRule: BookingRuleType;
  // 医院类型
  hospital: HospitalType;
}



// ------ 定义接口类型 ----------------------------------------
// 定义单个医院科室类型
export interface DepartmentItem {
  // 科室编码
  depcode: string;
  // 科室名称
  depname: string;
  // 子类型
  children: DepartmentList | null;
}

// 复数形式
export type DepartmentList = DepartmentItem[]

// 抽离医院编码和科室编码 - 公共
export interface CommonParams {
  // 医院编码
  hoscode: string;
  // 科室编码
  depcode: string;
}

// 获取排班规则参数类型
export interface ReqGetScheduleRuleListParams extends CommonParams {
  // 当前页码
  page: number;
  // 每页条数
  limit: number;
}

// 排班规则类型
export interface ScheduleRuleItem {
  // 具体日期
  workDate: string;
  // 星期几
  dayOfWeek: string;
  // 总预约数
  reservedNumber: number;
  // 已经预约的人数
  availableNumber: number;
}

// 复数形式
export type ScheduleRuleList = ScheduleRuleItem[]

// 获取排班规则的响应类型
export interface ReqGetScheduleRuleListRespone {
  // 总条数
  total: number;
  // 预约规则list
  bookingScheduleList: ScheduleRuleList;
  // 基本信息
  baseMap: {
    // 医院名称
    hosname: string;
  }
}

// ---- 获取医生排班信息的参数 -----------
export interface ReqGetScheduleListParams extends CommonParams {
  // 工作时间
  workDate: string;
}

// 单个的详细的医生排班
export interface ScheduleItem {
  id: string;
  // 挂号费
  amount: number;
  // 可以预约的人数
  availableNumber: number;
  // 号源时间
  workDate: string;
  // 剩余预约的人数
  reservedNumber: number;
  // 擅长技能
  skill: string;
}

// 复数形式
export type ScheduleList = ScheduleItem[]


/*
  3类数据
      科室数据     Department
        单项数据，复数形式，请求参数类型
      排班数据     ScheduleRules
        单项数据，复数形式，请求参数类型
      医生排班数据 Schedulelist
        单项数据，复数形式，请求参数类型
*/ 
